<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue-组件通信父组件向子组件传递数据</title>
</head>
<body>
    <div id="app">
        <!-- 如果不使用v-bind movies将被当做字符串直接传过去 -->
        <!-- <cpn cmovies="movies" cmessage="message"></cpn> -->
        <cpn v-bind:cmovies='movies' :cmessage='message'></cpn>
    </div>
    <template id="cpn">
        <div>
            <h2>{{cmovies}}</h2>
            <ul>
                <li v-for="item in cmovies">{{item}}</li>
            </ul>
            <h2>{{cmessage}}</h2>
        </div>
    </template>
    <script src="./js/vue.min.js"></script>
    <script>
          // 父组件传子组件

        const cpn = {
            template:"#cpn",
            data() {
                return{

                }
            },
            // props可以传  数组 
            // props:['cmovies','cmessage']

            // 对象写法
            // 当需要对props进行类型验证时，就需要对象写法
            // 验证支持的数据类型：String ，Number，Boolean，Array，Object，Date，Function，Symbol
            // 当我们有自定义构造函数时，验证也支持自定义的类型
            props:{
                // 1.类型限制
                cmovies:Array,  //要求传数组
                cmessage:String,//要求传入字符串
                // 2.提供一些默认值以及必传值 ,未传数据时显示默认值
                cmessage:{
                    type:String,
                    default:'aaaa',
                    required:true // 必传值，如果未传入会报错
                },
                // 类型为对象或者数组是，默认值必须是一个函数
                cmovies:{
                    type:Array,
                    //  default:[], //   无效默认值
                    default(){
                        return[]
                    }
                }

            }
        }
        const app = new Vue({
            el:'#app',
            data:{
                message:'hello',
                movies:['海王','美人鱼','海贼王','鲛人泪']
            },
            components:{
                cpn
            }
        })
    </script>
</body>
</html>